package com.zerdoor.dao;

import java.util.List;
import java.util.Map;

/**
 * Created by zhongjieyu on 2014/11/3.
 * 项目任务Dao接口
 */
public interface ITaskInfoDao {

    /**
     * 根据majorid查询码表数据
     * @param majorid
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findMinorCodeByMajorid(int majorid) throws Exception;

    /**
     * 查询所有增值服务
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findAddValue() throws Exception;


    /**
     * 增加单条任务信息数据，返回插入后的ID
     * @param taskInfo 任务信息
     * @throws Exception
     */
    void addTaskInfo(Map<String,String> taskInfo) throws Exception;


    /**
     * 根据itemID 修改单条任务信息数据
     * @param itemInfo 任务信息
     * @throws Exception
     */
    void updateItemInfoByItemId(Map<String,String> itemInfo) throws Exception;

    /**
     * 插入主订单表，返回插入后的ID
     * @param param
     * @return
     * @throws Exception
     */
//    void addOrderMain(Map<String,String> param) throws Exception;

    /**
     * 插入任务订单表，并返回插入后的ID
     * @param orderTask
     * @return
     * @throws Exception
     */
    void addOrderTask(Map<String,String> orderTask ) throws Exception;

    /**
     * 插入增值服务订单
     * @param orderAddvalue
     * @throws Exception
     */
    void addOrderAddvalue(Map<String,String> orderAddvalue) throws Exception;

    /**
     * 修改当前项目进度，传入进度代码
     * @throws Exception
     */
    void updateCurrentProgressByTaskId(Map<String,String> param) throws Exception;

    /**
     * 改变增值服务订单状态为完成
     * @param param 其中包括ID和价格
     * @throws Exception
     */
    void updateOrderAddvalueStatus(Map<String,String> param) throws Exception;




    /**
     * 根据用户ID查询当前用户推荐人ID
     * @param userId 用户ID
     * @return
     * @throws Exception
     */
    String findPresenterByUserId(String userId) throws Exception;


    /**
     * 根据任务ID查询增值服务价格
     * @param taskId
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findPriceByTaskId(String taskId) throws Exception;

    /**
     * 根据任务ID查询任务信息数据
     * @param taskId 任务ID
     * @return
     * @throws Exception
     */
    Map<String,Object> findTaskInfoByTaskId(String taskId) throws Exception;

    /**
     * 根据任务ID查询增值服务数据
     * @param taskId
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findOrderAddvalueByTaskId(String taskId) throws Exception;


    /**
     * 根据用户ID和订单总金额查询余额是否足够,账户是否冻结
     * @param param
     * @return
     * @throws Exception
     */
    Map<String,String> findUserWalletByUserId(Map<String,String> param) throws Exception;

    /**
     * 根据用户ID更新用户账户余额
     * @param param
     * @throws Exception
     */
    void updateUserWalletByUserId(Map<String,String> param) throws Exception;

    /**
     * 根据用户ID查询用户当前零手续费卡数量
     * @param userId
     * @return
     * @throws Exception
     */
    int findUserFeeNumByUserId(int userId) throws Exception;

    /**
     * 根据增值服务ID集查询增值服务总价
     * @param addvalueIds
     * @return
     * @throws Exception
     */
    String findAddvalueSumPriceByAddvalueIds(String addvalueIds) throws Exception;

    /**
     * 根据itemId查询任务订单表Id
     * @param itemId
     * @return
     * @throws Exception
     */
    String findOrderTaskIdByItemId(String itemId) throws Exception;


    /**
     * 根据任务订单ID修改增值服务价格
     * @param param
     * @throws Exception
     */
    void updateOrderTaskAddvalueById(Map<String,String> param) throws Exception;

    /**
     * 根据任务订单ID删除增值服务订单表数据
     * @param orderTaskId
     * @throws Exception
     */
    void deleteOrderItemAvByOrderTaskId(String orderTaskId) throws Exception;

    /**
     * 根据需求技能ID查询技能数据
     * @param skillIds ID集
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findSkillBySkillIds(String skillIds) throws Exception;

    /**
     * 根据需求技能ID集查询需求技能名称
     * @param skillIds
     * @return
     * @throws Exception
     */
    List<String> findSkillNameBySkillIds(String skillIds) throws Exception;


    /**
     * 根据项目ID查询招标预算，如果该项目为不托管定金，那么则返回空
     * @param itemId
     * @return
     * @throws Exception
     */
    Map findItemBudgetById(String itemId)  throws Exception;

    /**
     * 根据用户ID查询用户账户余额
     * @param userId
     * @return
     * @throws Exception
     */
    float findUserWalletById(String userId) throws Exception;


    /**
     * 根据用户ID修改用户当前手续费卡数量
     * @param user_id
     * @throws Exception
     */
    void updateUserFeeNumByUserId(String user_id) throws Exception;

    /**
     * 插入0手续费卡使用记录
     * @param param
     * @throws Exception
     */
    void insertUserFee(Map param) throws Exception;



}
